﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Dados.AgendamentoWS;
using Dados.AdministracaoWS;
using System.Threading;


namespace Financeiro.Dados
{
    public class NotaFiscalDAO
    {
        private static string connectionSettings = ConfigurationManager.ConnectionStrings["ERP_FinanceiroConnectionString"].ConnectionString;

        public static DataTable dadosEmpresa()
        {
            // conexão com o webservice
            AdministracaoWS administracao = new AdministracaoWS();
            DataTable dtDados = administracao.DadosClinica();

            DataRow dr = dtDados.Rows[0];

            // aqui pegar os dados
            string nome = dr["name"].ToString();
            string endereço = dr["endereco"].ToString();
            string cidade = dr["cidade"].ToString();
            string estado = dr["estado"].ToString();
            string pais = dr["pais"].ToString();
            string cep = dr["cep"].ToString();
            string CNPJ = dr["cnpj"].ToString();
            string telefone = dr["telefone"].ToString();

            string endCompleto = String.Format(endereço + ", " + cidade + ", " + estado + ", " + pais +". CEP:" + cep + ".");

            //formatando em tabelas
            DataTable dt = new DataTable();

            dt.Columns.Add("Nome");
            dt.Columns.Add("CNPJ");
            dt.Columns.Add("Endereco");
            dt.Columns.Add("Telefone");
            

            DataRow rowDados = dt.NewRow();
            rowDados["Nome"] = nome;
            rowDados["Endereco"] = endCompleto;
            rowDados["CNPJ"] = CNPJ;
            rowDados["Telefone"] = telefone;

            dt.Rows.Add(rowDados);
            return dt;
          

        }


        public static string buscaDataPagamento(int id_conta)
        {
            // acessa o banco de dados para pegar a data de pagamento
            try
            {
                DateTime data = new DateTime();

                SqlConnection Conn = new SqlConnection(connectionSettings);
                Conn.Open();
                SqlCommand cmd = new SqlCommand("SELECT data_pagamento from Conta WHERE id_conta = @id", Conn);

                cmd.Parameters.Add("@id", SqlDbType.Int);
                cmd.Parameters["@id"].Value = id_conta;
               

                if (!(cmd.ExecuteScalar() is DBNull))
                {
                    data = (DateTime)cmd.ExecuteScalar();
                  
                }

                return data.ToString();
            }
            catch (Exception ex)
            {
                throw new Exception("Ocorreu um erro no método buscarDataPagamento: " + ex.Message);
            }
        }


        public static int buscaIdCliente(int id_conta)
        {
            // acessa o banco para buscar o id do cliente
            try
            {
                int id = 0;

                SqlConnection Conn = new SqlConnection(connectionSettings);
                Conn.Open();
                SqlCommand cmd = new SqlCommand("SELECT TOP 1 id_cliente from Conta WHERE id_conta = @id", Conn);

                cmd.Parameters.Add("@id", SqlDbType.Int);
                cmd.Parameters["@id"].Value = id_conta;


                if (!(cmd.ExecuteScalar() is DBNull))
                {
                    id = (int)cmd.ExecuteScalar();

                }

                return id;
            }
            catch (Exception ex)
            {
                throw new Exception("Ocorreu um erro no método buscaIdCliente: " + ex.Message);
            }
        }


        public static int buscaIdAtendimento(int id_conta)
        {
            // acessa o banco de dados para pegar o id de atendimento
            try
            {
                int id = 0;

                SqlConnection Conn = new SqlConnection(connectionSettings);
                Conn.Open();
                SqlCommand cmd = new SqlCommand("SELECT TOP 1 id_atendimento from Conta WHERE id_conta = @id", Conn);

                cmd.Parameters.Add("@id", SqlDbType.Int);
                cmd.Parameters["@id"].Value = id_conta;


                if (!(cmd.ExecuteScalar() is DBNull))
                {
                    id = (int)cmd.ExecuteScalar();

                }

                return id;
            }
            catch (Exception ex)
            {
                throw new Exception("Ocorreu um erro no método buscaIdAtendimento: " + ex.Message);
            }
        }



        public static DataTable dadosCliente(int id_Cliente)
        {
            // aqui se conecta com o webservice
            FornecedorServicos webServiceAgendamento = new FornecedorServicos();
            Paciente paciente = webServiceAgendamento.PacienteById(15);


            // recolhendo os dados
            string nome = paciente.nome;
            string endereco = paciente.endereco_residencial;
            string bairro = "";
            string cidade = "";
            string estado = "";
            string cep = paciente.cpf;
            string CNPJ = "";
            string inscicao = "";

            //formatando em tabelas
            DataTable dt = new DataTable();

            dt.Columns.Add("Nome");
            dt.Columns.Add("CNPJ");
            dt.Columns.Add("Endereco");
            dt.Columns.Add("Bairro");
            dt.Columns.Add("Municipio");
            dt.Columns.Add("Estado");
            dt.Columns.Add("CEP");
            dt.Columns.Add("Inscricao");


            DataRow rowDados = dt.NewRow();
            rowDados["Nome"] = nome;
            rowDados["Endereco"] = endereco;
            rowDados["CNPJ"] = CNPJ;
            rowDados["Bairro"] = bairro;
            rowDados["Municipio"] = cidade;
            rowDados["Estado"] = estado;
            rowDados["CEP"] = cep;
            rowDados["Inscricao"] = inscicao;

            dt.Rows.Add(rowDados);
            return dt;


        }


        public static DataTable buscarServicos(int id_Conta)
        {
            try
            {
                //faz select de todos os serviços utilizados

                SqlConnection Conn = new SqlConnection(connectionSettings);
                Conn.Open();
                SqlCommand cmd = new SqlCommand("SELECT * FROM ContaServico WHERE id_conta = @id_conta", Conn);
                cmd.Parameters.Add("@id_conta", SqlDbType.Int);
                cmd.Parameters["@id_conta"].Value = id_Conta;
                
                SqlDataAdapter da = new SqlDataAdapter(cmd);

                DataSet ds = new DataSet();
                da.Fill(ds, "Servicos");

                Conn.Close();

                DataTable dt = ds.Tables["Servicos"];
                return dt;
            }



            catch (Exception ex)
            {
                throw new Exception("Ocorreu um erro no método buscarServicos: " + ex.Message);
            }

        }


    }
}
